﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace 群智感知激励系统服务端Core
{
    public class TCP传输层
    {
        static Socket sock = new Socket( // 构建一个套接字服务  
            AddressFamily.InterNetwork,
            SocketType.Stream,
            ProtocolType.Tcp
        );
        public static void 启动()
        {
            int backlog = 0; // 临时挂起的客户端连接的最大数量  
            sock.Bind(new IPEndPoint(IPAddress.Any, 1337)); // 绑定服务器地址  
            sock.Listen(backlog); // 开始侦听  
            Task t = new Task(t1);
            t.Start();
        }
        static void t1()
        {
            while (true) // 循环接收请求  
            {
                Socket client = sock.Accept(); // 为客户端建立服务连接  
                用户 新用户 = new 用户(client);
                用户.用户列表.Add(新用户);
                //Console.Title = "当前用户：" + 用户.用户列表.Count;
                Console.WriteLine("用户已登入！当前用户数量为：" + 用户.用户列表.Count);
                Task t = new Task(t2, 新用户);
                t.Start();

            }
        }
        static void t2(object _新用户)
        {
            用户 新用户 = _新用户 as 用户;
            while (true)
            {
                try
                {
                    byte[] buffer = new byte[512]; // 字节缓冲区  
                    int offset = 新用户.sock.Receive(buffer, buffer.Length, SocketFlags.None); // 接收客户端传入的数据  
                    string recvtext = Encoding.UTF8.GetString(buffer, 0, offset);
                    Console.WriteLine(recvtext);   // 输出客户端传入的数据  
                    buffer = new byte[512];
                    buffer = Encoding.UTF8.GetBytes("hello");
                    // 服务器回应客户端 
                    新用户.sock.Send(buffer, buffer.Length, SocketFlags.None);
                }
                catch
                {
                    用户.用户列表.Remove(新用户);
                    用户.删除列表.Add(新用户);
                    //Console.Title = "当前用户：" + 用户.用户列表.Count;
                    break;
                }
            }
        }
    }
}
